/*
  Diamond Girl - Game where player collects diamonds.
  Copyright (C) 2005-2014  Joni Yrjänä <joniyrjana@gmail.com>
  
  This program is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation; either version 2 of the License, or
  (at your option) any later version.
  
  This program is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.
  
  You should have received a copy of the GNU General Public License
  along with this program; if not, write to the Free Software
  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA


  Complete license can be found in the LICENSE file.
*/

#include "widget.h"

#include <assert.h>

void widget_set_navigation_updown(struct widget * up, struct widget * down)
{
  enum WIDGET_TYPE type_up;

  assert(up != NULL);
  assert(down != NULL);
  assert(up != down);

  assert(up->navigation_down_ == NULL);
  assert(down->navigation_up_ == NULL);

  type_up = widget_get_ulong(up, "type");

  if(type_up == WT_TITLE_HIGHSCORES)
    {
      int amount;
      
      amount = widget_get_ulong(up, "amount");
      assert(amount > 0);
      assert(amount <= up->children_count_);
      assert(up->children_[amount - 1] != NULL);
      up = up->children_[amount - 1];
    }
  
  up->navigation_down_ = down;
  down->navigation_up_ = up;

  stack_push(up->widgets_linking_to_this, down);
  stack_push(down->widgets_linking_to_this, up);
}
